package exit_;

/**
 * @author DCSGO
 * @version 1.0
 * 线程的退出
 */
public class ThreadExit_ {
    //线程的退出有两种方式
    //最常规的就是线程运行结束后自行退出
    //另外一种就是由主线程或其他线程通过改变该线程中的某个变量的方式来结束该线程
    //这种退出线程的方式称为 通知方式

    public static void main(String[] args) throws InterruptedException {
        System.out.println("让你先跑3秒");
        T t = new T();
        t.start();
        Thread.sleep(3 * 1000);
        System.out.println("你可以挂了");
        //通知线程t退出
        t.setLoop(false);
    }
}

class T extends Thread {
    private int cnt;
    //loop用于控制该线程的结束
    private boolean loop = true;

    public void setLoop(boolean loop) {
        this.loop = loop;
    }

    @Override
    public void run() {
        while (loop) {
            System.out.println(Thread.currentThread().getName() + "运行中 " + (++cnt));
            try {
                Thread.sleep(500);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
